struct ToDrop;

// Rust 中的析构函数概念是通过 Drop trait 提供的。 当资源离开作用域，就调用析构函数。
// 你无需为每种类型都实现 Drop trait，只要为那些需要自己的析构函数逻辑的类型实现就可以了。
impl Drop for ToDrop {
    // 析构函数
    // 当资源自动释放时，会调用 drop 方法
    fn drop(&mut self) {
        println!("ToDrop is being dropped");
    }
}

fn main() {
    println!("---> 开始测试 ToDrop 的自动析构函数");
    // _x 的作用域在下面下面花括号里面，离开花括号，会自动被释放
    {
        println!("创建ToDrop实例");
        let _x = ToDrop;
        println!("准备调用析构函数");
    }
    println!("---> 程序结束");
}